perm filename GACK.SAI[CMS,LCS] blob sn#182663 filedate 1975-10-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "GACK"
C00004 ENDMK
C⊗;
BEGIN "GACK"
  REQUIRE "DDSUB.SAI[GRA,HPM]" SOURCE_FILE;
  INTEGER N,D,I,J,K,LAST;
  INTEGER ARRAY CH[0:7];
  REAL SIZE;

  OUTSTR("	NUMBER OF DRIPS = ");N←CVD(INCHWL);
  OUTSTR("	DIRECTION (0=FORWARD,1=BACK,2=BOTH) = ");
  D←CVD(INCHWL);IF D<0∨D>2 THEN D←0;
  BEGIN
	REAL ARRAY X[0:N],Y[0:N],SZ[0:N];
	DDINIT;
	SCREEN(0,0,1.,1.);
	RAN(CALL(0,"TIMER"));

	FOR I←0 STEP 1 UNTIL 7 DO CH[I]←SYNMAP(I);
	FOR I←0 STEP 1 UNTIL N DO BEGIN
	  SZ[I]←RAN(0)/2;X[I]←RAN(0);Y[I]←RAN(0);END;

	I←0;
	DO BEGIN
	  IF SZ[I]<SZ[I+1] THEN BEGIN
	    SZ[I]↔SZ[I+1];
	    IF I THEN I←I-2;END;
	  I←I+1;END
	UNTIL I=N;
	
	FOR I←7 STEP -1 UNTIL 0 DO BEGIN
	  DRKEN;RECTAN(0,0,1,1);
	  FOR K←0 STEP 1 UNTIL N DO BEGIN
	    LAST←1;SIZE←SZ[K];
	    FOR J←0 STEP 1 UNTIL 2↑8-1 DO BEGIN
	      IF D=2 THEN 
	        IF ((J LSH -I) LAND 1)=(K LAND 1) THEN LITEN ELSE DRKEN
	      ELSE IF ((J LSH -I) LAND 1)≠D THEN LITEN ELSE DRKEN;
	      IF ((J LSH -I) LAND 1)≠LAST THEN BEGIN
		ELLIPS(X[K]-SIZE,Y[K]-SIZE,X[K]+SIZE,Y[K]+SIZE);
		LAST←1-LAST;END;
	      SIZE←SIZE*0.98;END;END;
	  GDDCHN(CH[I]);
	  FOR K←1 STEP 1 UNTIL 3 DO DPYUP(CH[I]);END;
END;
END "GACK";